﻿Public Class frmKhachHang
    Private khBUS As KhachHangBUS
    Private khDTO As KhachHangDTO
    Private cm As CurrencyManager
    Private flagIsUp As Boolean
    Private Sub frmKhachHang_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LoadData()
    End Sub
    Private Sub LoadData()
        dgvKhachHang.ClearSelection()
        khBUS = New KhachHangBUS
        Dim khList = New List(Of KhachHangDTO)
        khList = khBUS.GetData()
        cm = Me.BindingContext(khList)
        txtMaKH.DataBindings.Add("Text", khList, "MaKH")
        cboLoaiNha.DataBindings.Add("Text", khList, "MaLoaiNha")
        txttenKH.DataBindings.Add("Text", khList, "TenKH")
        txtdcKH.DataBindings.Add("Text", khList, "DiaChiKH")
        txtDTKH.DataBindings.Add("Text", khList, "SoDTKH")
        cboThoiGianThue.DataBindings.Add("Text", khList, "ThoiGianThue")
        dtpNgayBD.DataBindings.Add("Text", khList, "NgayBatDauThue")
        txttienThue.DataBindings.Add("Text", khList, "TienThue")
        dgvKhachHang.DataSource = khList
    End Sub
    Private Function TestInfo() As Boolean
        TestInfo = True
        If Trim(txtMaKH.Text) = "" Then
            TestInfo = False
            MsgBox("Mã Khách Hàng không được bỏ trống!", MsgBoxStyle.Exclamation, "Thông báo lỗi")
            txtMaKH.Focus()
            Exit Function
        ElseIf Trim(txttenKH.Text) = "" Then
            TestInfo = False
            MsgBox("Tên Khách Hàng không được bỏ trống!", MsgBoxStyle.Exclamation, "Thông báo lỗi")
            txttenKH.Focus()
            Exit Function
        ElseIf Trim(txtdcKH.Text) = "" Then
            TestInfo = False
            MsgBox("Địa Chỉ Khach Hàng không được bỏ trống!", MsgBoxStyle.Exclamation, "Thông báo lỗi")
            txtdcKH.Focus()
            Exit Function
        ElseIf Trim(txtDTKH.Text) = "" Then
            TestInfo = False
            MsgBox("Điện thoại Khách hàng không được bỏ trống!", MsgBoxStyle.Exclamation, "Thông báo lỗi")
            txtDTKH.Focus()
            Exit Function
        ElseIf Trim(cboThoiGianThue.Text) = "" Then
            TestInfo = False
            MsgBox("Thời Gian thuê Khách hàng không được bỏ trống!", MsgBoxStyle.Exclamation, "Thông báo lỗi")
            cboThoiGianThue.Focus()
            Exit Function
        ElseIf Trim(dtpNgayBD.Text) = "" Then
            TestInfo = False
            MsgBox("Ngày Bắt Đầu Thuê Khách hàng không được bỏ trống!", MsgBoxStyle.Exclamation, "Thông báo lỗi")
            dtpNgayBD.Focus()
            Exit Function
        ElseIf Trim(txttienThue.Text) = "" Then
            TestInfo = False
            MsgBox("Tiền Thuê Khách hàng không được bỏ trống!", MsgBoxStyle.Exclamation, "Thông báo lỗi")
            txttienThue.Focus()
            Exit Function
        End If

    End Function
    Private Sub LockButton(ByVal dt As Boolean)
        btnThem.Enabled = dt
        btnSua.Enabled = dt
        btnXoa.Enabled = dt
        btnLuu.Enabled = Not dt
        btnThoat.Enabled = dt
    End Sub
    Private Sub ClearBinding()
        txtMaKH.DataBindings.Clear()
        cboLoaiNha.DataBindings.Clear()
        txttenKH.DataBindings.Clear()
        txtdcKH.DataBindings.Clear()
        txtDTKH.DataBindings.Clear()
        cboThoiGianThue.DataBindings.Clear()
        dtpNgayBD.DataBindings.Clear()
        txttienThue.DataBindings.Clear()

    End Sub
    Private Sub LockTextbox(ByVal f As Boolean)
       
        If f = False Then
            txtMaKH.BackColor = Color.LemonChiffon
            cboLoaiNha.BackColor = Color.LemonChiffon
            txttenKH.BackColor = Color.LemonChiffon
            txtdcKH.BackColor = Color.LemonChiffon
            txtDTKH.BackColor = Color.LemonChiffon
            cboThoiGianThue.BackColor = Color.LemonChiffon
            dtpNgayBD.BackColor = Color.LemonChiffon
            txttienThue.BackColor = Color.LemonChiffon

        Else
            txtMaKH.BackColor = Color.White
            cboLoaiNha.BackColor = Color.White
            txttenKH.BackColor = Color.White
            txtdcKH.BackColor = Color.White
            txtDTKH.BackColor = Color.White
            cboThoiGianThue.BackColor = Color.White
            dtpNgayBD.BackColor = Color.White
            txttienThue.BackColor = Color.White
        End If
    End Sub
    Private Sub ClearTextbox()
        txtMaKH.Text = ""
        txttenKH.Text = ""
        cboLoaiNha.Text = ""
        txtdcKH.Text = ""
        txtDTKH.Text = ""
        cboThoiGianThue.Text = ""
        dtpNgayBD.Text = ""
        txttienThue.Text = ""

    End Sub
    Private Sub btnThem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnThem.Click
        flagIsUp = True
        LockTextbox(True)
        LockButton(False)
        ClearTextbox()
        dgvKhachHang.Enabled = False
        txtMaKH.Focus()
    End Sub

    Private Sub btnLuu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLuu.Click
        ' khai bao bien
        Dim makh As String = txtMaKH.Text
        Dim loainha As String = cboLoaiNha.Text
        Dim tenkh As String = txttenKH.Text
        Dim diachi As String = txtdcKH.Text
        Dim dienthoai As String = txtDTKH.Text
        Dim thoigianthue As String = cboThoiGianThue.Text
        Dim ngaybd As String = dtpNgayBD.Text
        Dim tienthue As String = txttienThue.Text
        '---------------------------------------------
        If TestInfo() Then
            khDTO = New KhachHangDTO(makh, loainha, tenkh, diachi, dienthoai, thoigianthue, ngaybd, tienthue)
            khBUS = New KhachHangBUS()
            khBUS.CapNhat(khDTO, flagIsUp)
            ClearBinding()
            LoadData()
            LockTextbox(False)
            LockButton(True)
            dgvKhachHang.Enabled = True
            MsgBox("Đã cập nhật dữ liệu thành công", MsgBoxStyle.Information, "Thông báo")
        End If
    End Sub

    Private Sub btnXoa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXoa.Click
        Dim makh As String = txtMaKH.Text
        Dim qs = MsgBox("Bạn chắc chắn muốn xóa tất cả thông tin về:" _
                        & vbCrLf & vbCrLf & " - Mã Khách hàng: " & txtMaKH.Text _
                         & vbCrLf & vbCrLf & " - Lọai Nhà: " & cboLoaiNha.Text _
                        & vbCrLf & vbCrLf & " - Tên: " & txttenKH.Text & vbCrLf & vbCrLf & "_ Địa Chỉ Khách Hàng: " & txtdcKH.Text _
                        & vbCrLf & vbCrLf & " - Điện Thoại Khách Hàng: " & txtDTKH.Text _
                         & vbCrLf & vbCrLf & " - Thời Gian Thuê: " & cboThoiGianThue.Text _
                          & vbCrLf & vbCrLf & " - Ngày Bắt Đầu Thuê: " & dtpNgayBD.Text _
                           & vbCrLf & vbCrLf & " - Tiền Thuê: " & txttienThue.Text, _
                        vbInformation + vbYesNo, "Thông báo")
        If qs = vbYes Then
            khDTO = New KhachHangDTO(makh)
            khBUS = New KhachHangBUS()
            khBUS.XoaKhachHang(khDTO)
            ClearBinding()
            LoadData()
            LockTextbox(False)
            LockButton(True)
            dgvKhachHang.Enabled = True
            MsgBox("Dữ liệu đã xóa thành công", vbInformation, "Thông báo")
        Else
            MsgBox("Đã hủy thao tác xóa!", vbExclamation, "Thông báo")
        End If

    End Sub

    Private Sub btnSua_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSua.Click
        flagIsUp = False
        LockTextbox(True)
        LockButton(False)
        dgvKhachHang.Enabled = False
        txtMaKH.Focus()
    End Sub

    Private Sub btnXoaSach_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXoaSach.Click
        ClearBinding()
        LoadData()
        LockTextbox(False)
        LockButton(True)
        dgvKhachHang.Enabled = True
    End Sub

    Private Sub btnThoat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnThoat.Click
        Me.Close()
    End Sub
End Class